using UnityEngine;
using Spine.Unity;
using Spine;

[ExecuteAlways]                                    // ★ 使脚本在编辑器下也执行
[RequireComponent(typeof(SkeletonRenderer))]
public class SpineGlobalTint : MonoBehaviour {
    [Tooltip("叠加颜色")]
    public Color tint = Color.white;

    SkeletonRenderer sr;
    Skeleton skeleton;

    // 无论是启用还是在 Inspector 值变化时，都触发一次重绘
    void OnEnable()   => ApplyTint();
    void OnValidate() => ApplyTint();

    public void ApplyTint() {
        // 拿到 Spine 渲染器并确保它已初始化
        if (sr == null) sr = GetComponent<SkeletonRenderer>();
        if (sr == null) return;

        sr.Initialize(false);   // 强制创建 Skeleton 对象
        skeleton = sr.Skeleton;
        if (skeleton == null) return;

        // 正片叠底：顶点色直接乘到贴图上
        skeleton.R = tint.r;
        skeleton.G = tint.g;
        skeleton.B = tint.b;
        skeleton.A = tint.a;

        // 推送一次更新，让 Mesh 重新生成
        // 对于 SkeletonRenderer, LateUpdate() 会调用 ApplyAnimation 并重建网格
// #if UNITY_EDITOR
        sr.LateUpdate();  
// #endif
    }
}